from attr import dataclass

from commons.request_util import logger


@dataclass      # 添加 @dataclass 装饰器，可以自动为类生成一些特殊方法，如__init__()
class CaseInfo:
    # 必填
    feature: str
    story: str
    title: str
    request: dict
    validate: dict
    # 选填
    # 有默认值的不用赋值就能正常运行 所以就是选填的
    extract: dict = None
    parametrize: list = None

# 校验测试用例是否具备必填的字段
def verify_yaml(caseinfo: dict, yaml_name):
    try:
        new_caseinfo = CaseInfo(**caseinfo)     # 对caseinfo解包
        return new_caseinfo
    except Exception:
        logger.error(f"用例--{yaml_name}--不符合LeviTest框架的规范！")
        raise  Exception(f"用例--{yaml_name}--不符合LeviTest框架的规范！")
